import axios from 'axios'
import { useUserStore } from '@/stores/index'
import router from '@/router'
import { ElMessage } from 'element-plus'

const instance = axios.create({
  baseURL: 'http://localhost:8080',
  timeout: 3000,
})
const userStore = useUserStore()
// 请求拦截器
// use(两个参数)
instance.interceptors.request.use(
  (req) => {
    // 在发送请求前要做的事儿
    // 请求头携带token

    if (userStore.token != null) {
      req.headers.Authorization = userStore.token
    }

    return req
  },
  (err) => {
    // 在请求错误时要做的事儿
    // 该返回的数据则是axios.catch(err)中接收的数据
    return Promise.reject(err)
  },
)

// 响应拦截器
// use(两个参数)
instance.interceptors.response.use(
  (res) => {
    // 请求成功对响应数据做处理
    // 该返回的数据则是axios.then(res)中接收的数据
    return res.data
  },
  (err) => {
    // 在请求错误时要做的事儿
    // 该返回的数据则是axios.catch(err)中接收的数据
    if (err.response.status === 401) {
      userStore.removeToken()
      router.push('/login')
      ElMessage.error('token错误或过时,请重新登录以获得token')
    }
    return Promise.reject(err)
  },
)

export default instance
